# ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)



๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ, ๊ฒฐ๊ณผ๊ฐ’์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ

๋™์‹œ ์ ‘๊ทผ ์‹œ ์ž๋ฃŒ์˜ ์ผ๊ด€์„ฑ์„ ํ•ด์น˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚จ


# Race Condition์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

  1. # ์ปค๋„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ค‘์— ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ

    • ๋ฌธ์ œ์  : ์ปค๋„๋ชจ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํ•ด๊ฒฐ๋ฒ• : ์ปค๋„๋ชจ๋“œ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ, ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ disable ์‹œ์ผœ CPU ์ œ์–ด๊ถŒ์„ ๊ฐ€์ ธ๊ฐ€์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.
  2. # ํ”„๋กœ์„ธ์Šค๊ฐ€ 'System Call'์„ ํ•˜์—ฌ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘ ๋ฌธ๋งฅ ๊ตํ™˜์ด ๋ฐœ์ƒํ•  ๋•Œ

    • ๋ฌธ์ œ์  : ํ”„๋กœ์„ธ์Šค1์ด ์ปค๋„๋ชจ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋„์ค‘, ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์–ด CPU ์ œ์–ด๊ถŒ์ด ํ”„๋กœ์„ธ์Šค2๋กœ ๋„˜์–ด๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ( ํ”„๋กœ์„ธ์Šค2๊ฐ€ ์ž‘์—…์— ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ )
    • ํ•ด๊ฒฐ๋ฒ• : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„๋ชจ๋“œ์—์„œ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์–ด๋„ CPU ์ œ์–ด๊ถŒ์ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ํ•จ
  3. # ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ์ปค๋„ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ

    • ๋ฌธ์ œ์  : ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ํ™˜๊ฒฝ์—์„œ 2๊ฐœ์˜ CPU๊ฐ€ ๋™์‹œ์— ์ปค๋„ ๋‚ด๋ถ€์˜ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์—ฌ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํ•ด๊ฒฐ๋ฒ• : ์ปค๋„ ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ฐ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค, ๊ทธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ lock/unlock์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•
์ตœ์ข… ์ˆ˜์ • : 12/17/2022, 7:23:59 AM